<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:x-large; font-weight:600;">Шаг 159 - Метод CreateField</span></p>
<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;div style=&quot;position:absolute;left:-10000px;&quot;&gt;&lt; img src=&quot;//top-fwz1.mail.ru/counter?id=23099;js=na&quot; style=&quot;border:0;&quot; height=&quot;1&quot; width=&quot;1&quot; alt=&quot;top@Mail.ru&quot;/&gt;&lt; /div&gt;</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><a name="aswift_1_expand"></a>Описание<br />Создает новый объект <span style=" font-weight:600;">Field</span> (только в рабочей области ядра <span style=" font-weight:600;">Microsoft Jet</span>).<br /></p>
<pre style=" margin-top:12px; margin-bottom:12px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Set поле = объект.CreateField (имя, тип, размер)</span></pre>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;">Параметры<br /><span style=" font-weight:600;">поле</span><br />Объектная переменная, задающая создаваемый объект <span style=" font-weight:600;">Field</span>.<br /><span style=" font-weight:600;">объект</span><br />Объектная переменная, задающая объект <span style=" font-weight:600;">Index</span>, <span style=" font-weight:600;">Relation</span> или <span style=" font-weight:600;">TableDef</span>, в котором создается новый объект <span style=" font-weight:600;">Field</span>.<br /><span style=" font-weight:600;">имя</span><br />Необязательный. Выражение или переменная типа <span style=" font-weight:600;">Variant</span> (подтип <span style=" font-weight:600;">String</span>), содержащая уникальное имя нового объекта <span style=" font-weight:600;">Field</span>. Сведения о допустимых именах полей приведены в разделе о свойстве Name.<br /><span style=" font-weight:600;">тип</span><br />Необязательный. Константа, определяющая тип данных нового объекта <span style=" font-weight:600;">Field</span>. Сведения о допустимых константах определения типа данных приведены в разделе о свойстве <span style=" font-weight:600;">Type</span>.<br /><span style=" font-weight:600;">размер</span><br />Необязательный. Выражение или переменная типа <span style=" font-weight:600;">Variant</span> (подтип <span style=" font-weight:600;">Integer</span>), определяющая в байтах максимальный размер объекта <span style=" font-weight:600;">Field</span>, содержащего текстовые значения. Сведения о допустимых значениях аргумента размер приведены в разделе о свойстве <span style=" font-weight:600;">Size</span>. Для числовых полей и текстовых полей постоянной длины данный аргумент игнорируется.<br /></p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;">Замечания<br />Метод <span style=" font-weight:600;">CreateField</span> используется для создания нового поля и для указания имени, типа данных и размера поля. Если опустить какие-либо элементы синтаксиса при вызове метода <span style=" font-weight:600;">CreateField</span>, то можно задать или изменить значения соответствующего свойства с помощью инструкции присваивания перед добавлением нового объекта в семейство. После добавления нового объекта в семейство допускается изменение значений некоторых (но не всех) свойств поля. Дополнительные сведения приведены в разделах, посвященных отдельным свойствам.<br />Аргументы тип и размер применимы только к объектам <span style=" font-weight:600;">Field</span>, описывающим поля объектов <span style=" font-weight:600;">TableDef</span>. Для объектов <span style=" font-weight:600;">Field</span>, описывающих поля объектов <span style=" font-weight:600;">Index</span> и <span style=" font-weight:600;">Relation</span>, эти аргументы игнорируются.<br />Если аргумент имя указывает на объект, который уже добавлен в семейство, то при вызове метода <span style=" font-weight:600;">Append</span> возникает ошибка выполнения.<br />Для удаления объекта <span style=" font-weight:600;">Field</span> из семейства <span style=" font-weight:600;">Fields</span> следует применить к семейству метод <span style=" font-weight:600;">Delete</span>. Не допускается удаление объекта <span style=" font-weight:600;">Field</span> из семейства <span style=" font-weight:600;">Fields</span> объекта TableDef после создания индекса, включающего данное поле.<br /></p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;">Пример<br />Следующая программа использует метод <span style=" font-weight:600;">CreateField</span> для создания трех объектов <span style=" font-weight:600;">Field</span> в новом объекте <span style=" font-weight:600;">TableDef</span>. Далее отображаются свойства объектов <span style=" font-weight:600;">Field</span>, которые автоматически задаются в методе <span style=" font-weight:600;">CreateField</span>. (Свойства, значения которых остаются пустыми при создании объектов <span style=" font-weight:600;">Field</span>, не отображаются).<br /></p>
<pre style=" margin-top:12px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Sub CreateFieldX()</span></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';"><br /></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Dim dbsNorthwind As Database</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Dim tdfNew As TableDef</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Dim fldLoop As Field</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Dim prpLoop As Property</span></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';"><br /></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Set dbsNorthwind = OpenDatabase(&quot;Борей.mdb&quot;)</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Set tdfNew = dbsNorthwind.CreateTableDef(&quot;NewTableDef&quot;)</span></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';"><br /></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	</span><span style=" font-family:'Courier New,courier'; font-style:italic;">' Создает и добавляет новый объект Field </span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier'; font-style:italic;">	' в новый объект TableDef.</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	With tdfNew</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		</span><span style=" font-family:'Courier New,courier'; font-style:italic;">' Метод CreateField задает стандартный размер для нового</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier'; font-style:italic;">		' объекта Field, если размер не указан.</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		.Fields.Append .CreateField(&quot;ТекстовоеПоле&quot;, dbText)</span></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';"><br /></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		.Fields.Append .CreateField(&quot;ЦелоеПоле&quot;, dbInteger)</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		.Fields.Append .CreateField(&quot;ПолеДаты&quot;, dbDate)</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	End With</span></pre>
<pre style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px; font-family:'Courier New,courier';"><br /></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	dbsNorthwind.TableDefs.Append tdfNew</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Debug.Print &quot;Свойства новых полей в &quot; &amp; tdfNew.Name</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	</span><span style=" font-family:'Courier New,courier'; font-style:italic;">' Отображает семейство Fields, чтобы показать свойства </span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier'; font-style:italic;">	' новых объектов Field.</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	For Each fldLoop In tdfNew.Fields</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		Debug.Print &quot;    &quot; &amp; fldLoop.Name</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		For Each prpLoop In fldLoop.Properties</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">			</span><span style=" font-family:'Courier New,courier'; font-style:italic;">' Свойства, недопустимые в контексте семейства</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier'; font-style:italic;">			' TableDefs вызовут ошибку при попытке</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier'; font-style:italic;">			' прочитать их значения.</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">			On Error Resume Next</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">			Debug.Print &quot;        &quot; &amp; prpLoop.Name &amp; &quot; - &quot; &amp;  IIf(prpLoop = &quot;&quot;, &quot;[empty]&quot;, prpLoop)</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">			On Error GoTo 0</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">		Next prpLoop</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	Next fldLoop</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	</span><span style=" font-family:'Courier New,courier'; font-style:italic;">' Удаляет объект TableDef, созданный только для демонстрации.</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	dbsNorthwind.TableDefs.Delete tdfNew.Name</span></pre>
<pre style=" margin-top:0px; margin-bottom:0px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">	dbsNorthwind.Close</span></pre>
<pre style=" margin-top:0px; margin-bottom:12px; margin-left:10px; margin-right:10px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">End Sub</span></pre>
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<hr />
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.firststeps.ru/vba/vbahelp/daohelp/r.php?158"><span style=" text-decoration: underline; color:#0000ff;">Предыдущий Шаг</span></a> | <a href="http://www.firststeps.ru/vba/vbahelp/daohelp/r.php?160"><span style=" text-decoration: underline; color:#0000ff;">Следующий Шаг</span></a> | <a href="http://www.firststeps.ru/vba/vbahelp/daohelp/daohelp4.html"><span style=" text-decoration: underline; color:#0000ff;">Оглавление</span></a></p></body></html>